#include <bits/stdc++.h>
using namespace std;

int a[4][101];
bool visited[4][110]; // 记录是否访问过
int n;
long long ans = 0;

void search(int i, int j, long long num) {
  if (j == n) {
    ans = max(ans, num);
  }

  visited[i][j] = true;

  // 四个方向移动
  if (i > 1 && !visited[i - 1][j]) {
    search(i - 1, j, num * 2 + a[i - 1][j]);
  }
  if (i < 3 && !visited[i + 1][j]) {
    search(i + 1, j, num * 2 + a[i + 1][j]);
  }
  // 我的优化，如果是第二行，就只能往左走
  if (i == 2 && j > 1 && !visited[i][j - 1]) {
    search(i, j - 1, num * 2 + a[i][j - 1]);
  }
  if (j < n && !visited[i][j + 1]) {
    search(i, j + 1, num * 2 + a[i][j + 1]);
  }

  visited[i][j] = false;
}

int main() {
  cin >> n;
  for (int i = 1; i <= 3; i++) {
    for (int j = 1; j <= n; j++) {
      cin >> a[i][j];
    }
  }

  // 从第一列的三个位置开始
  for (int i = 1; i <= 3; i++) {
    if (a[i][1] == 1) {
      memset(visited, false, sizeof(visited));
      search(i, 1, 1);
    }
  }

  cout << ans;
  return 0;
}